package com.custom.action.joiner.interfaces;

import com.custom.comm.utils.lambda.SFunction;

import java.io.Serializable;

/**
 * 查询的列
 * @author Xiao-Bai
 * @since 2023/4/30 18:57
 */
@SuppressWarnings("all")
public interface SelectColumn<Children> extends SqlAggregateFunc<Children> {

    /**
     * 查询的字段映射到本身字段
     */
    <Any> Children select(SFunction<Any, ?>... columns);

    /**
     * 查询的字段映射到alias对应的字段
     */
    <A, B> Children selectAs(SFunction<A, ?> column, SFunction<B, ?> alias);

    /**
     * 是否查询时自动查询主表所有字段
     */
    Children selectPrimary();

    /**
     * 查询所有列
     */
    <Any> Children selectAll(Class<Any> anyClass);


}
